package com.sg.dto.biz.framework.res;


import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


@Data
public class BaseMetadataObjectPropertyDto
        extends BaseDto
        implements Serializable {

    /**
     * 对象属性ID:
     */
    @ApiModelProperty("对象属性ID")
    private String objectPropertyId;

    /**
     * 对象属性标识:
     */
    @ApiModelProperty("对象属性标识")
    private String objectPropertyCode;

    /**
     * 对象属性别名:
     */
    @ApiModelProperty("对象属性别名")
    private String objectPropertyAlias;
    /**
     * 业务对象ID:
     */
    @ApiModelProperty("业务对象ID")
    private String businessObjectId;
    /**
     * 业务对象编码:
     */
    @ApiModelProperty("业务对象编码")
    private String businessObjectCode;
    /**
     * 对象属性名称:
     */
    @ApiModelProperty("对象属性名称")
    private String objectPropertyName;
    /**
     * 对象属性类型:
     */
    @ApiModelProperty("对象属性类型")
    private String objectPropertyTypeCode;
    /**
     * 是否枚举字段:
     */
    @ApiModelProperty("是否枚举字段")
    private String isEnumeration;
    /**
     * 是否状态:
     */
    @ApiModelProperty("是否状态")
    private String isStatus;
    /**
     * 是否主键:
     */
    @ApiModelProperty("是否主键")
    private String isPrimaryKey;
    /**
     * 字段更新是否前端显示:
     */
    @ApiModelProperty("字段更新是否前端显示")
    private String isRecordVersion;
    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;
    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;
    /**
     * 是否存档:
     */
    @ApiModelProperty("是否存档")
    private String isArchive;
    /**
     * 是否推送前端缓存 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否推送前端缓存")
    private String isPushCache;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BaseMetadataObjectPropertyDto that = (BaseMetadataObjectPropertyDto) o;
        return objectPropertyId == that.objectPropertyId && objectPropertyCode == that.objectPropertyCode && objectPropertyAlias == that.objectPropertyAlias && businessObjectId == that.businessObjectId && businessObjectCode == that.businessObjectCode && objectPropertyName == that.objectPropertyName && objectPropertyTypeCode == that.objectPropertyTypeCode && isEnumeration == that.isEnumeration && isStatus == that.isStatus && isPrimaryKey == that.isPrimaryKey && isRecordVersion == that.isRecordVersion && orderNumber == that.orderNumber && operationInductionId == that.operationInductionId && operateTime == that.operateTime && subjectLifeCycle == that.subjectLifeCycle && isArchive == that.isArchive && isPushCache == that.isPushCache;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), objectPropertyId, objectPropertyCode, objectPropertyAlias, businessObjectId, businessObjectCode, objectPropertyName, objectPropertyTypeCode, isEnumeration, isStatus, isPrimaryKey, isRecordVersion, orderNumber, operationInductionId, operateTime, subjectLifeCycle, isArchive, isPushCache);
    }
}
